<!DOCTYPE html>
<title>Remove the last element on the fullscreen element stack</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../trusted-click.js"></script>
<div id="log"></div>
<div id="first">
    <div id="last"></div>
</div>
<script>
async_test(function(t)
{
    t.add_cleanup(() => {
        Promise.resolve(document.exitFullscreen()).catch(() => {});
    });
    var first = document.getElementById("first");
    trusted_request(t, first);
    document.onfullscreenchange = t.step_func(function(event)
    {
        assert_equals(document.fullscreenElement, first);
        assert_equals(event.target, first);
        var last = document.getElementById("last");
        trusted_request(t, last);
        document.onfullscreenchange = t.step_func(function(event)
        {
            assert_equals(document.fullscreenElement, last);
            assert_equals(event.target, last);
            last.remove();
            // Because /last/ was removed from the top layer, we exit
            // fullscreen element synchronously.
            assert_equals(document.fullscreenElement, first);
            document.onfullscreenchange = t.step_func_done(function(event)
            {
                // fullscreen change element should be queued against the
                // document target.
                assert_equals(document.fullscreenElement, null);
                assert_equals(event.target, document);
            });
        });
    });
});
</script>
